package com.team.service.annotation;

import java.lang.annotation.*;

/**
 * 缓存同步注解
 * 用于标记需要进行Redis与MySQL同步的方法
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CacheSync {
    
    /**
     * 缓存操作类型
     */
    CacheOperation operation();
    
    /**
     * 缓存键前缀
     */
    String keyPrefix() default "";
    
    /**
     * 缓存键的SpEL表达式，支持方法参数引用
     * 例如：#id 表示使用方法参数中名为id的值作为缓存键
     */
    String key();
    
    /**
     * 缓存过期时间（秒）
     */
    long expireSeconds() default 3600; // 默认1小时
    
    /**
     * MQ主题（写操作时使用）
     */
    String topic() default "cache.sync";
    
    /**
     * 是否在方法执行异常时清除缓存
     */
    boolean clearOnError() default false;
} 